//
//  NewsCollectionViewCell.m
//  item-NetEaseNews-tyw
//
//  Created by tyw on 15/9/30.
//  Copyright (c) 2015年 tyw. All rights reserved.
//

#import "NewsCollectionViewCell.h"
#import "NewsTableView.h"
#import "DuanziTableView.h"

#import "MJRefresh.h"
#import "NetEaseDataService.h"

@implementation NewsCollectionViewCell {
    NewsTableView* _tableView;
    DuanziTableView* _duanziTableView;
}

- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        self.userInteractionEnabled = YES;
        
        [self _createTableView];
    }
    
    return self;
}

#pragma mark - tableView
- (void)_createTableView {
    //非段子
    _tableView = [[NewsTableView alloc] initWithFrame:CGRectMake(0, 38, kWidth, kHeight-tabBarHeight*2-44)];
    [self _addTableViewRefreshAction];
    
    //段子
    _duanziTableView = [[DuanziTableView alloc] initWithFrame:_tableView.frame];
    [self _addDuanziTableViewRefreshAction];
}

#pragma mark - 添加表视图的上拉下拉刷新事件
//非段子
- (void)_addTableViewRefreshAction {
    //下拉事件,刷新最新数据
    _tableView.header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(tableViewLoadNewestAction)];
    
    //上拉事件，在原基础上再刷新一波
    _tableView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(tableViewLoadMoreAction)];
}
//非段子，上拉加载更多
- (void)tableViewLoadMoreAction {
    //判断当前页面的新闻类型
    NSDictionary* dic = self.newsModelArray[0];
    
    NSString* newsType = dic[@"tname"];
    
    if ([newsType isEqualToString:@"头条"]) {
        [NetEaseDataService newsHeadNewsDataRequestFrom:_tableView.newsModelArray.count size:20 block:^(id result) {
            if ([result isKindOfClass:[NSError class]]) {
                NSLog(@"新闻页 头条 数据请求失败 %@", result);
                [_tableView.footer endRefreshing];
                return;
            }
            NSArray* array = [result objectForKey:@"T1348647853363"];
            if (array.count) {
                NSArray* newArray = [_tableView.newsModelArray arrayByAddingObjectsFromArray:array];
                _tableView.newsModelArray = newArray;
            }
        }];
    } else if ([newsType isEqualToString:@"NBA"]) {
        [NetEaseDataService newsNBANewsDataRequestFrom:_tableView.newsModelArray.count size:20 block:^(id result) {
            if ([result isKindOfClass:[NSError class]]) {
                NSLog(@"新闻页 NBA 数据请求失败 %@", result);
                [_tableView.footer endRefreshing];
                return;
            }
            NSArray* array = [result objectForKey:@"T1348649145984"];
            if (array.count) {
                NSArray* newArray = [_tableView.newsModelArray arrayByAddingObjectsFromArray:array];
                _tableView.newsModelArray = newArray;
            }
        }];
    } else if ([newsType isEqualToString:@"娱乐"]) {
        [NetEaseDataService newsEntertainmentNewsDataRequestFrom:_tableView.newsModelArray.count size:20 block:^(id result) {
            if ([result isKindOfClass:[NSError class]]) {
                NSLog(@"新闻页 娱乐 数据请求失败 %@", result);
                [_tableView.footer endRefreshing];
                return;
            }
            NSArray* array = [result objectForKey:@"T1348648517839"];
            if (array.count) {
                NSArray* newArray = [_tableView.newsModelArray arrayByAddingObjectsFromArray:array];
                _tableView.newsModelArray = newArray;
            }
        }];
    } else if ([newsType isEqualToString:@"时尚"]) {
        [NetEaseDataService newsFashionNewsDataRequestFrom:_tableView.newsModelArray.count size:20 block:^(id result) {
            if ([result isKindOfClass:[NSError class]]) {
                NSLog(@"新闻页 时尚 数据请求失败 %@", result);
                [_tableView.footer endRefreshing];
                return;
            }
            NSArray* array = [result objectForKey:@"T1348650593803"];
            if (array.count) {
                NSArray* newArray = [_tableView.newsModelArray arrayByAddingObjectsFromArray:array];
                _tableView.newsModelArray = newArray;
            }
        }];
    } else if ([newsType isEqualToString:@"汽车"]) {
        [NetEaseDataService newsCarNewsDataRequestFrom:_tableView.newsModelArray.count size:20 block:^(id result) {
            if ([result isKindOfClass:[NSError class]]) {
                NSLog(@"新闻页 汽车 数据请求失败 %@", result);
                [_tableView.footer endRefreshing];
                return;
            }
            NSArray* array = [result objectForKey:@"list"];
            if (array.count) {
                NSArray* newArray = [_tableView.newsModelArray arrayByAddingObjectsFromArray:array];
                _tableView.newsModelArray = newArray;
            }
        }];
    } else if ([newsType isEqualToString:@"房产"]) {
        [NetEaseDataService newsHouseNewsDataRequestFrom:_tableView.newsModelArray.count size:20 block:^(id result) {
            if ([result isKindOfClass:[NSError class]]) {
                NSLog(@"新闻页 房产 数据请求失败 %@", result);
                [_tableView.footer endRefreshing];
                return;
            }
            NSArray* array = [result objectForKey:@"全国"];
            if (array.count) {
                NSArray* newArray = [_tableView.newsModelArray arrayByAddingObjectsFromArray:array];
                _tableView.newsModelArray = newArray;
            }
        }];
    }
    
    [_tableView.footer endRefreshing];
}
//非段子，下拉加载最新
- (void)tableViewLoadNewestAction {
    //判断当前页面的新闻类型
    NSDictionary* dic = self.newsModelArray[0];
    
    NSString* newsType = dic[@"tname"];
    
    if ([newsType isEqualToString:@"头条"]) {
        [NetEaseDataService newsHeadNewsDataRequestFrom:0 size:20 block:^(id result) {
            if ([result isKindOfClass:[NSError class]]) {
                NSLog(@"新闻页 头条 数据请求失败 %@", result);
                [_tableView.header endRefreshing];
                return;
            }
            NSArray* array = [result objectForKey:@"T1348647853363"];
            if (array.count) {
                _tableView.newsModelArray = array;
            }
        }];
    } else if ([newsType isEqualToString:@"NBA"]) {
        [NetEaseDataService newsNBANewsDataRequestFrom:0 size:20 block:^(id result) {
            if ([result isKindOfClass:[NSError class]]) {
                NSLog(@"新闻页 NBA 数据请求失败 %@", result);
                [_tableView.header endRefreshing];
                return;
            }
            NSArray* array = [result objectForKey:@"T1348649145984"];
            if (array.count) {
                _tableView.newsModelArray = array;
            }
        }];
    } else if ([newsType isEqualToString:@"娱乐"]) {
        [NetEaseDataService newsEntertainmentNewsDataRequestFrom:0 size:20 block:^(id result) {
            if ([result isKindOfClass:[NSError class]]) {
                NSLog(@"新闻页 娱乐 数据请求失败 %@", result);
                [_tableView.header endRefreshing];
                return;
            }
            NSArray* array = [result objectForKey:@"T1348648517839"];
            if (array.count) {
                _tableView.newsModelArray = array;
            }
        }];
    } else if ([newsType isEqualToString:@"时尚"]) {
        [NetEaseDataService newsFashionNewsDataRequestFrom:0 size:20 block:^(id result) {
            if ([result isKindOfClass:[NSError class]]) {
                NSLog(@"新闻页 时尚 数据请求失败 %@", result);
                [_tableView.header endRefreshing];
                return;
            }
            NSArray* array = [result objectForKey:@"T1348650593803"];
            if (array.count) {
                _tableView.newsModelArray = array;
            }
        }];
    } else if ([newsType isEqualToString:@"汽车"]) {
        [NetEaseDataService newsCarNewsDataRequestFrom:0 size:20 block:^(id result) {
            if ([result isKindOfClass:[NSError class]]) {
                NSLog(@"新闻页 汽车 数据请求失败 %@", result);
                [_tableView.header endRefreshing];
                return;
            }
            NSArray* array = [result objectForKey:@"list"];
            if (array.count) {
                _tableView.newsModelArray = array;
            }
        }];
    } else if ([newsType isEqualToString:@"房产"]) {
        [NetEaseDataService newsHouseNewsDataRequestFrom:0 size:20 block:^(id result) {
            if ([result isKindOfClass:[NSError class]]) {
                NSLog(@"新闻页 房产 数据请求失败 %@", result);
                [_tableView.header endRefreshing];
                return;
            }
            NSArray* array = [result objectForKey:@"全国"];
            if (array.count) {
                _tableView.newsModelArray = array;
            }
        }];
    }
    
    [_tableView.header endRefreshing];
}

//段子
- (void)_addDuanziTableViewRefreshAction {
    //下拉事件,刷新最新数据
    _duanziTableView.header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(duanziTableViewLoadNewestAction)];
    
    //上拉事件，在原基础上再刷新一波
    _duanziTableView.footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(duanziTableViewLoadMoreAction)];
}

- (void)duanziTableViewLoadNewestAction {
    [NetEaseDataService newsDuanziNewsDataRequestSize:20 block:^(id result) {
        if ([result isKindOfClass:[NSError class]]) {
            NSLog(@"新闻页 段子 数据请求失败 %@", result);
            [_duanziTableView.header endRefreshing];
            return;
        }
        NSArray* array = [result objectForKey:@"段子"];
        if (array.count) {
            _duanziTableView.duanziModelArray = array;
        }
    }];
    [_duanziTableView.header endRefreshing];
}

- (void)duanziTableViewLoadMoreAction {
    [NetEaseDataService newsDuanziNewsDataRequestSize:20 block:^(id result) {
        if ([result isKindOfClass:[NSError class]]) {
            NSLog(@"新闻页 段子 数据请求失败 %@", result);
            [_duanziTableView.footer endRefreshing];
            return;
        }
        NSArray* array = [result objectForKey:@"段子"];
        if (array.count) {
            NSMutableArray* newArray = [NSMutableArray arrayWithArray:_duanziTableView.duanziModelArray];
            [newArray addObjectsFromArray:array];
            _duanziTableView.duanziModelArray = newArray;
        }
    }];
    [_duanziTableView.footer endRefreshing];
}

#pragma mark - modelArray的set方法
- (void)setNewsModelArray:(NSArray *)newsModelArray {
    _newsModelArray = [newsModelArray copy];
    
    //段子与其他几个不太一样，需要使用另外的tableView，根据modelArray里的数据进行判断，当前是否是段子
    NSDictionary* dic = _newsModelArray[0];
    if (!dic[@"clkNum"]) {          //如果字典中不存在这个值，就不是段子
        [self.contentView addSubview:_tableView];
        [_duanziTableView removeFromSuperview];
        [_tableView setNewsModelArray:_newsModelArray];
        [_tableView setContentOffset:CGPointMake(0, 0)];//在这里写这一句，可以在每次打开新的collectionCell时，让tableView从最头部开始
        
    } else {                        //是段子
        [self.contentView addSubview:_duanziTableView];
        [_tableView removeFromSuperview];
        [_duanziTableView setDuanziModelArray:_newsModelArray];
        [_duanziTableView setContentOffset:CGPointMake(0, 0)];//在这里写这一句，可以在每次打开新的collectionCell时，让tableView从最头部开始
        
    }
}


@end
